package com.candy.th7;

public class Kitchen {
    //声明属性，食物，初始值为0
    private int food=0;
    public synchronized void do_cock() throws InterruptedException {
        //当food=1的时候，说明有食物，这个时候妈妈不用做饭
        //等着孩子把饭吃完了，food=0的时候，再开始做饭
        if(food==1){
            this.wait();
        }else {
            System.out.println(Thread.currentThread().getName()+"正在做饭。。。。");
            Thread.sleep(2000);
            //饭做好了，食物数量+1
            food++;
            System.out.println("饭已经做好了，快过来吃吧"+food);
            //提醒其他线程吃饭
            this.notifyAll();
        }
    }
    public synchronized void do_eat() throws InterruptedException {
        if (food==0) {
            //当前食物为0时，说明没有食物可以吃，孩子们需要等待
            this.wait();
        }else {
            //吃饭的只能是孩子们，所以调用该方法的当前线程为孩子
            Child c=(Child) Thread.currentThread();
            System.out.println(c.getName()+"抢到了食物，正在吃饭。。。");
            Thread.sleep(1000);
            //吃饭结束后食物数量减一
            food--;
            //吃饭结束后，体力值加1
            c.setHp(c.getHp()+1);
            System.out.println(c.getName()+"目前的体力值是："+c.getHp());
            System.out.println("food............"+food);
            //吃完后唤醒妈妈做饭
            this.notifyAll();
        }
    }
}
